package com.groupbuying.store.service;

import com.groupbuying.store.domain.StoreCapitalVirtualAccountDO;
import com.groupbuying.store.domain.StoreMainInfoDO;
import com.groupbuying.store.domain.StoreShopDO;
import com.groupbuying.store.utils.Query;
import com.groupbuying.store.utils.R;
import com.groupbuying.store.utils.apiresult.ApiResult;

import java.util.List;
import java.util.Map;

/**
 * 商户主信息
 * 
 * @author wenguoqiang
 * @email 17081@mengtaigroup.com
 * @date 2019-01-24 10:31:25
 */
public interface StoreMainInfoService {
	
	StoreMainInfoDO get(String uuid);
	
	List<StoreMainInfoDO> list(Map<String, Object> map);
	
	int count(Map<String, Object> map);
	
	int save(StoreMainInfoDO storeMainInfo);
	
	int update(StoreMainInfoDO storeMainInfo);
	
	int remove(String uuid);
	
	int batchRemove(String[] uuids);

	/**
	 * 更新服务门店主信息和账户等信息
	 * @param storeMainInfoModel
	 * @param customerModel
	 * @param virtualModel
	 * @param storeShop
	 */
    void updateServShopMainInfo(StoreMainInfoDO storeMainInfoModel, Object customerModel, StoreCapitalVirtualAccountDO virtualModel, StoreShopDO storeShop);

	/**
	 * 获取分页内全部数据
	 * @param nowPage
	 * @param pageShow
	 * @return
	 */
	List<StoreMainInfoDO> getAllServiceShop(String nowPage, String pageShow);

	/**
	 * 批量修改
	 * @param stores
	 */
	void batchUpdate(List<StoreMainInfoDO> stores);

	/**
	 * 根据供应商id和账户id查找列表
	 * @param nowPage
	 * @param pageShow
	 * @param userId
	 * @param providerId
	 * @param storeName
	 * @param storeNo
	 * @return
	 */
    List<StoreMainInfoDO> getStoreListByProviderIdAndAccountId(String nowPage,String pageShow,String userId,String providerId,String storeName,String storeNo);

	/**
	 * 根据供应商id和账户id查找列表
	 * @param query
	 * @return
	 */
	List<StoreMainInfoDO> getStoreListByProviderIdAndAccountId(Query query);

	/**
	 * 获取数量
	 * @param query
	 * @return
	 */
	int getStoreListByProviderIdAndAccountIdCount(Query query);

	/**
	 * 根据银盛用户编号获取
	 * @param usercode
	 * @return
	 */
    StoreMainInfoDO getByYsCode(String usercode);

	/**
	 * 审核商户门店
	 * @param params
	 * @return
	 */
	R auditStoreShop(Map<String, Object> params);

	/**
	 * 商户门店详情
	 * @param params
	 * @return
	 */
	R storeShopDetail(Map<String, Object> params);

	/***
	 * 获取页面列表
	 * @param params
	 * @return
	 */
	R getListByPage(Map<String, Object> params);

	/**
	 * Description 获取门店名称 <br>
	 *
	 * @author Ywxd <br>
	 * @param
	 * @return  List<String>
	 * @createDate 2019/6/24 11:16<br>
	 **/
	List<Map<String, String>> getUuidAndStoreName();

	/**
	 * 冻结或者解冻商户门店
	 * @param params
	 * @return
	 */
	R getListByManagePage(Map<String, Object> params);

	/**
	 * 冻结或者解冻商户门店
	 * @param params
	 * @return
	 */
	R freezeOrUnfreezeStoreShop(Map<String, Object> params);

	/**
	 * 获取商户详情
	 * @return
	 */
    R getShopDetail(Map<String, Object> params);

	/**
	 * 获取运营人员列表
	 * @param params
	 * @return
	 */
	R getStoreOperList(Map<String, Object> params);

	/**
	 * 编辑运营人员
	 * @param params
	 * @return
	 */
	R setStoreOper(Map<String, Object> params);

	/**
	 * 获取门店信息
	 * @return
	 */
	Map getStoreInfoByCounterUuid(String counterUuid);

	/**
	 * 门店编辑费率
	 */
	ApiResult setRate(Map<String ,Object> condMap);

	/**
	 * 获取需要导出的商户管理列表
	 * @param params
	 * @return
	 */
	R getExportStoreMangeList(Map<String, Object> params);

	/**
	 * 财务平台获取商户审核管理列表
	 * @param params
	 * @return
	 */
    R getListByPageInFinance(Map<String, Object> params);
}
